package com.wh.minio.container.dao;


import com.wh.minio.container.common.DateTool;
import com.wh.minio.container.common.MinioClientUtils;

import com.wh.minio.container.dto.BucketDTO;
import com.wh.minio.container.dto.RootDTO;
import com.wh.minio.container.entity.Root;
import io.minio.MinioClient;
import io.minio.errors.*;
import io.minio.messages.Bucket;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;

/***
 * RootDao, minio根DAO
 * @Package com.wh.minio.container.dao
 * @author 谢泽鹏
 * @date 2016年11月07日 下午15:10
 * @Copyright 个人版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2016
 * @version V1.0
 */
public class RootDao {


    /**
     * 获取minio根目录资源
     * @return
     * @throws NoSuchAlgorithmException
     * @throws IOException
     * @throws InvalidKeyException
     * @throws XmlPullParserException
     * @throws MinioException
     */
    public RootDTO listRoots() throws MinioException, NoSuchAlgorithmException,  IOException,
            InvalidKeyException, XmlPullParserException {
        RootDTO rootDTO = new RootDTO();
        List<Root> roots = new ArrayList<>();
        MinioClient minioClient = MinioClientUtils.getInstance().getMinioClient();
        List<Bucket> buckets = minioClient.listBuckets();
        for (Bucket bucket : buckets) {
            Root root = new Root();
            root.setBucketName(bucket.name());
            root.setCreationDate(DateTool.format(bucket.creationDate(), "yyyy-MM-dd HH:mm:ss"));
            roots.add(root);
        }
            rootDTO.setRootName("root");
            rootDTO.setRoots(roots);
            return rootDTO;
    }
}
